package com.ruoyi.rpt.mapper;

import java.util.List;
import com.ruoyi.rpt.domain.RptCategory;
import com.ruoyi.rpt.domain.RptDefinition;

/**
 * 报表分类Mapper接口
 */
public interface RptCategoryMapper {
    /**
     * 查询报表分类
     * 
     * @param categoryId 报表分类主键
     * @return 报表分类
     */
    public RptCategory selectRptCategoryByCategoryId(Long categoryId);

    /**
     * 查询报表分类列表
     * 
     * @param rptCategory 报表分类
     * @return 报表分类集合
     */
    public List<RptCategory> selectRptCategoryList(RptCategory rptCategory);

    /**
     * 新增报表分类
     * 
     * @param rptCategory 报表分类
     * @return 结果
     */
    public int insertRptCategory(RptCategory rptCategory);

    /**
     * 修改报表分类
     * 
     * @param rptCategory 报表分类
     * @return 结果
     */
    public int updateRptCategory(RptCategory rptCategory);

    /**
     * 删除报表分类
     * 
     * @param categoryId 报表分类主键
     * @return 结果
     */
    public int deleteRptCategoryByCategoryId(Long categoryId);

    /**
     * 批量删除报表分类
     * 
     * @param categoryIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteRptCategoryByCategoryIds(Long[] categoryIds);
    
    /**
     * 根据父节点ID查询子节点
     * 
     * @param parentId 父节点ID
     * @return 子节点列表
     */
    public List<RptCategory> selectChildrenByParentId(Long parentId);
    
    /**
     * 查询分类下的报表
     * 
     * @param categoryId 分类ID
     * @return 报表列表
     */
    public List<RptDefinition> selectReportsByCategory(Long categoryId);
    
    /**
     * 关联报表到分类
     * 
     * @param reportId 报表ID
     * @param categoryId 分类ID
     * @return 结果
     */
    public int insertReportCategory(Long reportId, Long categoryId);
    
    /**
     * 删除报表的分类关联
     * 
     * @param reportId 报表ID
     * @return 结果
     */
    public int deleteReportCategoryByReportId(Long reportId);
} 